﻿using EWC.HIS.Domain.Entities;
using System.Collections.Generic;
using System;
using System.Threading.Tasks;
using EWC.HIS.Domain.ViewManage.Do;
using EWC.Core.Application.Dtos;
using EWC.HIS.Domain.Data.Repositories;

namespace EWC.HIS.Domain.Repositories
{

    public interface IAppointmentRegistrationRepository : IRepository<AppointmentRegistration>
    {

        Task<AppointmentRegistration> GetAppointmentRegistrationByIdAsync(int id);

        Task<AppointmentRegistration> GetAppointmentRegistrationByAsync(string patientName, string medicalCondition);

        Task<IEnumerable<AppointmentRegistration>> GetAllAppointmentRegistrationsAsync();

        Task<Tuple<int, IEnumerable<AppointmentRegistration>>> GetPagedAppointmentRegistrations(string patientName, string medicalCondition, int pageIndex, int pageSize, bool useProcedureForAppointmentRegistrationPaged = false);

        Task<int> InsertAppointmentRegistrationAsync(AppointmentRegistration appointmentRegistration);

        Task<int> InsertAppointmentRegistrationListAsync(List<AppointmentRegistration> appointmentRegistrations);

        Task<bool> UpdateAppointmentRegistrationAsync(AppointmentRegistration appointmentRegistration);

        Task<bool> DeleteAppointmentRegistrationAsync(AppointmentRegistration appointmentRegistration);
     
    }
}
